#include "liste.h"


void init_liste(Liste *liste){
  
  liste->debut=NULL;
  liste->fin=NULL;
  liste->taille=0;
}


/*
void init_variable(variable *v){
  v->nom= malloc(25*sizeof(char));
 
  v->type= malloc(25*sizeof(char));
  
}
	*/

void copier(variable *donnees1, variable *donnees2){
  

}



int est_egale(variable donnees1, variable donnees2){
  
  //TO-DO

	return 0;
}


void inserer(Liste *liste, variable *donnees){
  
  EltListe *nv;
  if(liste->taille==0){
    nv=malloc(sizeof(EltListe));
    init_variable(&(nv->donnees));
    copier(&(nv->donnees),donnees);
    nv->precedent=liste->debut;
    nv->suivant=liste->fin;
    liste->debut=nv;  
    liste->fin=nv;
    liste->taille++;}
  else{
  nv=malloc(sizeof(EltListe));
  init_variable(&(nv->donnees));
  copier(&(nv->donnees),donnees);
  nv->precedent=NULL;
  nv->suivant=liste->debut;
  
  liste->debut->precedent=nv;  
  liste->debut=nv;
  liste->taille++;
   
  }
}


void supprimer(Liste *liste, variable donnees){
  
  EltListe *elt;
  elt=malloc(sizeof(EltListe));  
  elt=liste->debut;
  while(elt!=NULL){

    if(est_egale(elt->donnees,donnees)){
      
      if(elt==liste->debut){

	liste->debut=elt->suivant;
	liste->taille--;
	if(liste->taille >1){
	elt->suivant->precedent=NULL;	
	elt->suivant=NULL;
	}

	
 
	
      }

      else if(elt==liste->fin){

	liste->fin->precedent->suivant=NULL;
	liste->fin=liste->fin->precedent;
	liste->taille--;


      }
      else{

	elt->suivant->precedent=elt->precedent;	
	elt->precedent->suivant=elt->suivant;
	liste->taille--;

      }
           
      break; 
        
    }
    
    
    else
      elt=elt->suivant;     
   	
    
    
  }

}

void supprimer_liste(Liste *l){

  if (l->taille!=0){
  EltListe *elt;
  elt=malloc(sizeof(EltListe));  

  elt=l->debut;
 
  while(elt!=NULL){
    
    supprimer(l,elt->donnees);
    elt=l->debut;
     }
  
  }

}



void afficher_liste(Liste * l){
  if (l->taille!=0){
    EltListe *elt;
    elt=malloc(sizeof(EltListe));  
    elt=l->debut;
    while(elt!=l->fin){
      afficher_variable(&(elt->donnees));
      elt=elt->suivant;
    }
    afficher_variable(&(elt->donnees));
  }
  else printf("liste vide");
}
